// pages/profile/index.ts
const app = getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    nickName: app.userProfile.nickName, // 默认从应用实例上面获取数据
    avatar: app.userProfile.avatar,
  },
  async getNickName(e) {
    console.log(e.detail.value)
    // 更新到当前页面的data里面
    this.setData({
      nickName: e.detail.value,
    })
    // 提交接口
    const { code } = await wx.http.put('/userInfo', {
      nickName: e.detail.value,
    })
    if (code !== 10000) return wx.utils.toast('更新昵称失败')
    // 1、更新成功了，应用实例上的信息也要更新
    app.userProfile.nickName = e.detail.value
    // 2、通过页面栈手动更新上一个页面的data信息
    const pages = getCurrentPages()
    pages.at(-2).setData({
      nickName: e.detail.value,
    })
  },
  chooseAvatar(e) {
    console.log(e.detail.avatarUrl)
    // 把当前的图片地址上传到服务器端
    this.updateAvatar(e.detail.avatarUrl)
  },
  updateAvatar(url) {
    // 图片的上传操作
    wx.uploadFile({
      filePath: url,
      header: {
        Authorization: 'Bearer ' + app.token, // 请求头部
      },
      // 接口需要的额外的字段信息
      formData: {
        type: 'avatar',
      },
      // 文件的key，后端通过这个key获取文件内容
      name: 'file',
      url: wx.http.baseURL + '/upload', // 上传接口
      success: (res) => {
        const {
          code,
          data: { url },
        } = JSON.parse(res.data)
        if (code !== 10000) return wx.utils.toast('上传失败')
        // 1、更新当前页面的头像信息
        this.setData({
          avatar: url,
        })
        // 2、更新上一个页面【我的页面的头像信息】
        const pages = getCurrentPages()
        pages.at(-2).setData({
          avatar: url,
        })
        // 3、更新应用实例的头像信息
        app.userProfile.avatar = url
      },
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {},
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
})
